According to the Flex documentation :
In an ActionScript file, when you define component events or other aspects of a component that affect more than a single property, you add the
metadata tag outside the class definition so that the metadata is bound to the entire class, as the following example shows:
// Add the [Event] metadata tag outside of the class file.
[Event(name="enableChange", type="flash.events.Event")]
public class ModalText extends TextArea {
...
// Define class properties/methods
private var _enableTA:Boolean;
// Add the [Inspectable] metadata tag before the individual property.
[Inspectable(defaultValue="false")]
public function set enableTA(val:Boolean):void {
_enableTA = val;
this.enabled = val;
// Define event object, initialize it, then dispatch it.
var eventObj:Event = new Event("enableChange");
dispatchEvent(eventObj);
}
}
In this example, the "enableChange" event must be considered part of the API. Therefore, it should be strongly typed.
Noncompliant code example
[Event(name="enableChange")]
public class ModalText extends TextArea {...}
Compliant solution
[Event(name="enableChange", type="flash.events.Event")]
public class ModalText extends TextArea {...}